perm filename PTMOVF.FAI[MSS,LCS]1 blob sn#170760 filedate 1975-07-26 generic text, type T, neo UTF8
00100		TITLE MSSIO ; ********* JUN 8,74 *********
00210		INTERNAL LOOK,LOOKD,LOOKF
00310		ENTRY	GETPTS,MOVIT,EXTEN
00700	DEFINE ERROR (MSG)
00800	<	JSA 16,.ERROR
00900		JUMP [ASCIZ/MSG/
01000	]
01100	>
01200	
08300	.ERROR:	0
08400		OUTSTR [ASCIZ/?
08500	/]				;MAKE SURE HE CAN SEE HIS ERROR
08600		OUTSTR @(16)		;OUTPUT ERROR MESSAGE
08700		CALLI 1,12		;LET USER CONTI2UE
08800		JRA 16,1(16)
     

00300	
00400		CH←13
00500	
00600	REGS:	BLOCK 20
00700	
00800	;LOOK(<FILE>) FOR NO EXT., LOOKD() FOR .DAT, LOOKF() FOR .DMD
00900	
01000	LOOKF:	0
01100		MOVSI 0,'DMD'
01200		JRST LOOK1
01300	LOOKD:	0
01400		MOVSI 0,'DAT'
01500		JRST LOOK1
01600	LOOK:	0
01700		MOVEI	0,0
01800	LOOK1:	MOVEM	0,DIR+1
01900		MOVE	0,@(16)
02000		MOVEM 	0,FILNAM
02100		JSA 16, INTFIQ
02200		SETZM	DIR+2
02300		SETZM	DIR+3
02400		LOOKUP	CH,DIR
02500		TDZA	0,0
02600		MOVNI	0,1
02700		JRA 16,1(16)
02800	
02900	INTFIQ:	0	;INITS DSK FOR INPUT
03000		MOVEI REGS
03100		BLT REGS+3
03200		INIT CH,17
03300		SIXBIT/DSK/
03400		0
03500		HALT .-3
03600	;	ERROR <CAN'T INIT DSK!>
03700	
03800	INTF4:	MOVE 0,FILNAM#
03900		MOVEM 0,FN#
04000		MOVE 1,[POINT 7,FN]
04100	INTF3:	MOVE 2,[POINT 6,DIR]
04200		SETZM DIR
04300		MOVEI 3,5
04400	INTF1:	ILDB 0,1
04500		CAIN 0," "
04600		JRST INTF2
04700		SUBI 0,40
04800		IDPB 0,2
04900		SOJG 3,INTF1
05000	INTF2:	HRLZI REGS
05100		BLT 3
05200		JRA 16,0(16)
05300	
05400	DIR:	BLOCK 4
12200		EXTERNAL .COMM.,XRN,KJY,PTR,POSI,AMOD,KNR,NNP
12300	
12400	  K←15↔J←14↔ M←2↔ R2←5↔ X←6↔ L←4↔ R←7↔ A←11↔RY←3↔RZ←13↔JJ2←12
12500		DEFINE FIXX(N)
12600	<	JUMPGE	N,.+5
12700		MOVNS	N
12800		FIX 	N,233000    
12900		MOVNS	N
13000		CAIA
13100		FIX	N,233000 >	; TO FIX IT LIKE 'IFIX' DOES.
13200	
13300	; 	SUBROUTINE GETPTS
13400	;	COMMON/KNR/N(500) /NNP/NP(500)
13500	;	COMMON/XRN/RN(4000)  /KJY/ K,J
13600	;	COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS
13700	;	1/PTR/PWDS(250),ITEM,LL,I,IX
13800	;	EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R11,RJQ(9))
13900	;	1,(R6,RJQ(4))
14000	
14100	GETPTS:	0		;CALL GETPTS(N)
14200		SETZ	J,	;	J=0
14300		SETZ	K,	;	K=0
14400		MOVE 	JJ2,POSI+=8
14500		MOVE	R2,.COMM.
14600	;;	SETZ	X,
14700		MOVE	X,@(16)
14800		SOS	X
14900		MOVEI	M,PTR	;	DO 1 M=1,ITEM
15000		ADDI	M,(X)
15100	G1:	AOJ	X,
15200		MOVE	L,(M)
15300		FIXX(L)
15400		MOVEI	R,XRN		;L=PWDS(M)
15500		ADDI	R,(L)		;IF(RTLINE(L))GO TO 1
15600		MOVE	1,1(R)		;RN(L+2)
15700		CAML	R2,[=5.0]
15800		JRST	GZ
15900		CAME	R2,1	
16000		JRST 	GX
16100	GZ:	MOVE	A,.COMM.+7		;RY=RN(L+1)
16200		JUMPLE	A,G9			;F(R6.LE.0)GO TO 9
16300		CAME	A,(R)
16400		JRST	GX
16500	;  CHECK CODE NUM
16600	G9:	MOVE	A,2(R)		;IF(R6.NE.RY)GO TO 1
16700		CAMLE	A,.COMM.+6
16800		JRST	G2	;9	IF(OUTLIM(R4,R5,RN(L+3)))GO TO 2
16900		CAMGE	A,.COMM.+5	;R4
17000		JRST	G2
17100	
17200		SKIPG	JJ2
17300		MOVE	JJ2,X
17400		AOJ	J,
17500	;  IN LIMITS?
17600	;	MOVEI	A,XRN+=2498	;J=J+1
17650		MOVEI	A,KNR-1
17700		ADDI	A,(J)
17800		MOVEI	0,(L)
17900		AOJ	K,		;K=K+1
18000	;	MOVEI	1,XRN+=2998
18050		MOVEI	1,NNP-1
18100		ADDI	1,(K)		;NP(K)=L
18200		MOVEM	0,(1)
18300		ADDI	0,3		;N(J)=L+3
18400		MOVEM	0,(A)
18500	;  NP IS FOR USE IN JUSTIFY ROUTINE
18600	G2:	MOVE	RY,(R)	;2	IF(RY.LT.4)GO TO 1
18700		CAMGE	RY,[=4.0]
18800		JRST	GX
18900		CAMLE	RY,[=7.0]
19000		JRST	GX		;IF(RY.GT.7)GO TO 1
19100	;  TWO-ENDED ITEM?
19200		MOVE	RZ,-1(R)	;RZ=RN(L)
19300	;  WD CNT
19400		CAMN	RY,[=4.0]	;GO TO(4,5,6,7),IFIX(RY)-3
19500		JRST	G4
19600		CAMN	RY,[=5.0]
19700		JRST	G5
19800		CAMN	RY,[=6.0]
19900		JRST	G6
20000		CAMG	RZ,[=4.0]	;4	IF(RZ.GT.2)GO TO 5
20100		JRST	G5		; THERE IS A TRILL WIGGLE
20200		JRST	GX		;GO TO 1   -- NO WIGGLE (P7≠0)
20300	G4:	CAMG	RZ,[=2.0]	;7	IF(RZ.GT.3)GO TO 5
20400		JRST	GX
20500		JRST	G5		;GO TO 1
20600	G6:	CAMGE	RZ,[=8.0]	;6	IF(RZ.LT.8)GO TO 8
20700		JRST	G8
20800	;;	MOVEI	1,XRN		;IF(RN(L+10).LT.30)GO TO 8
20900	;;	ADDI	1,(L)
21000	;;	MOVE	1,11(1)
21100		MOVE	1,=9(R)
21200		CAMGE	1,[=30.0]
21300		JRST	G8
21400		MOVE	A,7(R)	  ; IF(OUTLIM(R4,R5,RN(L+8)))GO TO 8
21500		CAMLE	A,.COMM.+6
21600		JRST	G8
21700		CAMGE	A,.COMM.+5
21800		JRST	G8
21900		SKIPG	JJ2
22000		MOVE	JJ2,X
22100		AOJ	J,
22200	;  IN LIMITS?
22300	;	MOVEI	A,XRN+=2498	;J=J+1
22350		MOVEI	A,KNR-1
22400		ADDI	A,(J)
22500		MOVEI	0,(L)		;J=J+1
22600		ADDI	0,=8		;N(J)=L+8
22700		MOVEM	0,(A)
22800	G8:	CAMGE	RZ,[=7.0]	;8	IF(RZ.LT.7)GO TO 5
22900		JRST 	G5
23000		MOVE	A,6(R)		;IF(RN(L+7))GO TO G8B
23100		JUMPL	A,G8B		; P7 IS NEG FOR TREMOLO
23200		MOVE	A,7(R)		;IF(RN(L+8).NE.0)GO TO G8B
23300		JUMPN	A,G8B
23400		CAMGE	RZ,[=8.0]
23500		JRST	G5		;IF(RZ.LT.8)GO TO G5
23600		MOVE	A,=9(R)		;IF(RN(L+10).EQ.0)GO TO G5
23700		JUMPE	A,G5		;PASSES NUMBER OVER BEAM.
23800	G8B:	MOVE	A,8(R)
23900		CAMLE	A,.COMM.+6
24000		JRST	G5
24100		CAMGE	A,.COMM.+5	;R4
24200		JRST	G5
24300	
24400		SKIPG	JJ2
24500		MOVE	JJ2,X
24600		AOJ	J,		;J=J+1
24700	;  IN LIMITS?
24800	;	MOVEI	A,XRN+=2498	;J=J+1
24850		MOVEI	A,KNR-1
24900		ADDI	A,(J)
25000		MOVEI	0,(L)
25100		ADDI	0,=9		;IF(OUTLIM(R4,R5,RN(L+9)))GO TO 5
25200		MOVEM	0,(A)		;N(J)=L+9
25300	G5:	MOVE	A,5(R)
25400		CAMLE	A,.COMM.+6
25500		JRST	GX
25600		CAMGE	A,.COMM.+5	;R4
25700		JRST	GX
25800	
25900		SKIPG	JJ2
26000		MOVE	JJ2,X
26100		AOJ	J,
26200	;  IN LIMITS?
26300	;|	MOVEI	A,XRN+=2498	;J=J+1
26350		MOVEI	A,KNR-1
26400		ADDI	A,(J)
26500		MOVEI	0,(L)  ;5	IF(OUTLIM(R4,R5,RN(L+6)))GO TO 1
26600		ADDI	0,6		;N(J)=L+6
26700		MOVEM	0,(A)
26800	GX:	CAMGE	X,PTR+=250	;1	CONTINUE
26900		AOJA	M,G1
27000		MOVEM	JJ2,POSI+=8
27100		MOVEM	J,KJY+1
27200		MOVEM	K,KJY
27300		JRA	16,1(16)
27400	
27500	;	SUBROUTINE MOVIT
27600	;	COMMON /KNR/ N(500)
27700	;	COMMON/XRN/RN(4000)  /KJY/ DONT,J
27800	;	COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS
27900	;	EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R9,RJQ(7))
28000	;	1,(R6,RJQ(4)),(N,RN(2500)),(R8,RJQ(6))
28100	MOVIT:	0		;RDIS=(R9-R8)/(R5-R4)
28200		MOVE	R,.COMM.+=10
28300		FSBR	R,.COMM.+=9
28400		MOVE	RY,.COMM.+6
28500		FSBR	RY,.COMM.+5
28600		FDVR	R,RY
28700	;	MOVEI	L,XRN+=2499	;	DO 1 K=1,J
28750		MOVEI	L,KNR
28800		SETZ	K,
28900		MOVE	0,.COMM.+=10	; SET UP R9
29000	M1:	MOVE	X,L	       ;	L=N(K)
29100		MOVE	A,(X)
29200		MOVEI 	R2,XRN		;RA=RN(L)
29300		ADDI	R2,(A)
29400		MOVEI	RZ,(R2)
29500		MOVE	R2,-1(R2)
29600		CAMGE	R2,.COMM.+5	;IF(OUTLIM(R4,R5,RA))GO TO 1
29700		JRST 	MX
29800		CAMLE	R2,.COMM.+6
29900		JRST	MX
30000		JUMPE	0,M2	;IF(R9.NE.0)RA=(RA-R4)*RDIS
30100		FSBR	R2,.COMM.+5
30200		FMPR	R2,R 
30300	M2: 	FADR	R2,.COMM.+=9	;	RN(L)=R8+RA
30400		MOVEM	R2,-1(RZ)
30500	MX:	AOJ	K,		;1	CONTINUE
30600		CAMGE	K,KJY+1
30700		AOJA	L,M1
30800		JRA	16,(16)
36300	
36400	EXTEN:	0	;FUNCTION EXTEN(X)
36500		HRRM	16,.+2
36600		JSA	16,AMOD	;EXTEN=AMOD(X,1.)*10.
36700		JUMP 	@0
36800		JUMP	[=1.0]
36900		FMPR	[=10.0]
37000		JRA	16,1(16)
37100	
37200		END